package day3_Methods;

import java.util.Scanner;

// 1.java中方法的重载与什么有关，如果两个方法的返回值不同其余相同，是否可以构成方法的重载
// 相同功能的方法，但是参数的类型，个数，排列顺序不同即为重载    不可以
//2.变量作为参数传递，如果在方法中变量的值被改变会不会影响原变量的值，为什么
// 不会，因为基本数据类型就存放在栈内存中所以不可更改，
// 而引用数据类型使用时调用的是栈内存中的引用地址，而数据存放在堆内存中,地址不可更改数据可以
public class TestExercise {
    public static void main(String[] args) {
//        3.接收一个整数n，输出1+2+3+...+n 的和。
//        numberAnd();
//        4.接收一个整数，输出这个整数是几位数。
        howManyDigits();
//        5.第一个方法，返回两个int值中的最大值，第二个方法，返回两个double的最大值，第三个方法，返回三个double值中的最大值。要求三个方法重载
        int maxInt = maxValue(2,1);
        double max1 = maxValue(2.2,3.2);
        double max2 = maxValue(2.2,3.2,0.2);
        System.out.println("两个int值中的最大值"+maxInt);
        System.out.println("两个double值中的最大值"+max1);
        System.out.println("三个double值中的最大值"+max2);
    }
    //接收一个整数n，输出1+2+3+...+n 的和。
    public static void numberAnd(){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int num = sc.nextInt();
        int and = 0;
        for (int i = 1; i <= num; i++) {
            and+=i;
        }
        System.out.println("和为:"+and);
    }
    //接收一个整数，输出这个整数是几位数。
    public static void howManyDigits(){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int num = sc.nextInt();
        int n = 1;
        while (num/10 != 0){
            n++;
            num/=10;
        }
        System.out.println("这是个:"+n+"位数");
    }
    // 两个int值中的最大值
    public static int maxValue(int a,int b){
       int max = 0;
       if(a>b){
           max = a;
       }else {
           max = b;
       }
       return max;
    }
    // 两个double值中的最大值
    public static double maxValue(double a,double b){
        double max = 0.00;
        if(a>b){
            max = a;
        }else {
            max = b;
        }
        return max;
    }
    // 三个double值中的最大值
    public static double maxValue(double a,double b,double c){
        double max = 0.00;
       if(a>b){
           max = a;
       }else {
           max = b;
       }
       if(max<c){
           max = c;
       }
       return max;
    }
}
